// Handles the undo stack for duplicator actions.
// -------------------------------------------------------------------

package NewDuplicator_Server
{
	//Catch things falling off the end of the undo stack
	function QueueSO::push(%obj, %val)
	{
		%lastVal = %obj.val[(%obj.head + 1) % %obj.size];
		
		if(getFieldCount(%lastVal) == 2)
		{
			%str = getField(%lastVal, 1);
			
			if(
				   %str $= "ND_PLANT"
				|| %str $= "ND_PAINT"
				|| %str $= "ND_WRENCH"
			){
				%qobj = getField(%lastVal, 0);
				if(isObject(%qobj)){
					%qobj.delete();
				}else{
					// talk("QueueSO::push(" @ %obj @ ", " @ %val @ ") - Nonexistent object " @ %qobj);
				}
			}
		}
		
		parent::push(%obj, %val);
	}
};
